package com.lin.cloud.disk.service;

import com.github.pagehelper.PageInfo;
import com.lin.cloud.disk.document.CompanyStatusDocument;
import com.lin.cloud.disk.entity.pojo.Company;
import com.lin.cloud.disk.entity.request.*;
import com.lin.cloud.disk.entity.request.company.*;

import java.util.List;

/**
 * (Company)表服务接口
 *
 * @author ljc
 * @since 2020-12-29 16:01:31
 */
public interface ICompanyService {

    /**
     * 获取公司主体
     * @param companyId
     * @return
     */
    Company getAvailableCompanyById(Long companyId);

    /**
     * 修改公司主体信息
     * @param request
     */
     void modifyCompanyInfo(ModifyCompanyInfoRequest request);


    /**
     * 添加公司主体信息
     * @param request
     * @return
     */
    Long addCompanyInfo(AddCompanyInfoRequest request);

    /**
     * 删除公司主体信息
     * @param request
     */
    void deleteCompany(DeleteCompanyRequest request);

    /**
     * 获取公司主体分页列表
     * @param request
     * @return
     */
    PageInfo<Company> getCompanyPageList(GetCompanyPageListRequest request);

    /**
     * 找回公司主体信息
     * @param request
     */
    void retrieveCompany(RetrieveCompanyRequest request);

    /**
     * 修改公司状态
     * @param companyStatus
     */
    void updateCompanyStatus(CompanyStatusDocument companyStatus);

    /**
     * 审核公司状态
     * @param reviewCompanyStatusRequest
     */
    void reviewCompanyStatus(ReviewCompanyStatusRequest reviewCompanyStatusRequest);

    /**
     * 通过ID查询
     * @param id
     * @return
     */
    Company findById(Long id);

    /**
     * 获取可用的公司
     * @return
     */
    List<Company> getAvailableCompany();

    /**
     * 根据ID更新
     * @param company
     */
    Integer updateById(Company company);


    /**
     * 获取过期的公司列表
     * @return
     */
    List<Long> getExpireCompanyList();

    /**
     * 设置为已过期
     * @param expireCompanyList
     */
    void setCompanyStatusExpire(List<Long> expireCompanyList);
}